/*
 * @Author: your name
 * @Date: 2020-07-24 23:44:08
 * @LastEditTime2020-12-02 22:11:00
 * @LastEditorsPlease set LastEditors
 * @Description: In User Settings Edit
 * @FilePath: \STM32F103_FreeRTOS\User\app\shell\shell_queue.h
 */ 
#ifndef _SHELL_QUEUE_H_
#define _SHELL_QUEUE_H_

#include "common_types.h"

#define SHELL_QUEUE_SIZE  128

typedef struct ShellQueue
{
    uint16_t u16Head;
    uint16_t u16Tail;
    uint16_t u16Numb;
    const uint16_t cu16Size;
    uint8_t *pu8Data;
    void (*Init)(struct ShellQueue *pQueue);
    boolean (*IsFull)(struct ShellQueue *pQueue);
    boolean (*IsEmpty)(struct ShellQueue *pQueue);
    boolean (*Push)(struct ShellQueue *pQueue, uint8_t u8Data);
    boolean (*Pop)(struct ShellQueue *pQueue, uint8_t *pu8Data);
}ShellQueue_t;


extern ShellQueue_t g_ShellQueueISR;
extern ShellQueue_t g_ShellQueue;

#endif

